package es.ucm.fdi.pe.practica2.genetico2.seleccion;

import java.util.LinkedList;

import es.ucm.fdi.pe.practica2.genetico2.CromosomaAlumnos;

public class Seleccion {
	public final static int Ruleta = 0;
	public final static int TorneoDeterminista = 1;
	public final static int TorneoAleatorio = 2;
	public final static int Ranking = 3;
	public final static int Propio = 4;
	public final static String[] Metodos = {"Ruleta","Torneo determinista","Torneo aleatorio","Ranking","Propio"};
	
	public CromosomaAlumnos getAlumno(int metodo, LinkedList<CromosomaAlumnos> poblacion, double alfa){
		switch (metodo){
			case Ruleta:  return (new SeleccionRuleta().getAlumno(poblacion));
			case TorneoDeterminista:  return (new SeleccionTorneoDeterminista().getAlumno(poblacion, alfa));
			case TorneoAleatorio:  return (new SeleccionTorneoAleatorio().getAlumno(poblacion, alfa));
			case Ranking:  return (new SeleccionRanking().getAlumno(poblacion, alfa));
			case Propio:  return (new SeleccionPropio().getAlumno(poblacion, alfa));
			default: return (new SeleccionRuleta().getAlumno(poblacion));
		}
	}

	public void calculaRanking(LinkedList<CromosomaAlumnos> poblacion, double alfa) {
		new SeleccionRanking().calculaRanking(poblacion, alfa);
	}
}
